ngl: Avoid offscreens in more cases
authorMatthias Clasen <mclasen@redhat.com>
Thu, 16 Sep 2021 12:05:21 +0000 (08:05 -0400)
committerBenjamin Otte <otte@redhat.com>
Thu, 16 Sep 2021 21:59:37 +0000 (23:59 +0200)
We avoid an offscreen if we know the child node
can 'handle' the transform. Shadow nodes can if their
child node does - either the child node is a text node
in which case the shortcuts we take for shadow nodes
will work fine with the transform (we just render the
text node offset), or the child is not a text node,
in which case we render the shadow to an offscreen
anyway.

This change makes the label-shadows reftest pass with
the GL renderer, not by fixing the issue but by avoiding
it.

gsk/ngl/gsknglrenderjob.c

index 92d659f976077df8e20b654fed5fd4955b22c6e4..4cccd89ba538339809b8538a94fff6a923022ebf 100644 (file)
@@ -252,6 +252,9 @@ node_supports_transform (const GskRenderNode *node)
       case GSK_TEXT_NODE:
         return TRUE;
 
+      case GSK_SHADOW_NODE:
+        return node_supports_transform (gsk_shadow_node_get_child (node));
+
       case GSK_TRANSFORM_NODE:
         return node_supports_transform (gsk_transform_node_get_child (node));